<?php
//CONFIGURACOES DO SITE ############################################
define('HOST', 'localhost');
define('USER', 'root');
define('PASS', '');
define('DBA', 'wsphp');

//AUTOLOAD DE CLASSES ##############################################
//O OPERADOR NEW IRA JOGAR PARA O METODO __AUTOLOAD, O NOME DA CLASSE.
//METODO MAGICO
function __autoload($Class) {
    //$CLASS E O NOME DA CLASSE VINDO DO NEW.
    
    //NOME DA PASTA NO ARRAY;
    //configuracao de diretorio.
    $cDir = ['Conn'];
    
    //INCLUDE DIRETO.
    //VERIFICA SE A INCLUSAO OCORREU.
    $iDir = null;
    
    //PERCORRE O ARRAY, PASSANDO OS VALORES DO ARRAY PARA $dirName(NOME DAS PASTAS). 
    foreach ($cDir as $dirName):
        //VERIFICA PRIMEIRO SE NAO INCLUIU O ARQUIVO. SE ELE E UM ARQUIVO E SE NAO E UM DIRETORIO
        //__DIR__ E O DIRETORIO ATUAL.
        //DEVE PASSAR \\ PARA ESCREVER LITERALMENTE
        if (!$iDir && file_exists(__DIR__ . "\\{$dirName}\\{$Class}.php") && !is_dir(__DIR__ . "\\{$dirName}\\{$Class}.php")):
            //SERA INCLUIDO AS CLASSES SE AS CONDICOES VERDADEIRAS
            include_once (__DIR__ . "\\{$dirName}\\{$Class}.php");
            $iDir = true;
        endif;
    endforeach;
    
    //VERIFICA SE FOI INCLUIDO O ARQUIVO
    if (!$iDir):
        trigger_error("Nao foi possivel incluir {$Class}.php", E_USER_ERROR);
        die;
    endif;
}

//TRATAMENTO DE ERROS ##############################################
//CSS constantes :: Mensagens de Erro
define('WS_ACCEPT', 'accept');
define('WS_INFOR', 'infor');
define('WS_ALERT', 'alert');
define('WS_ERROR', 'error');

//WSERRO  :: Exibe erros lancados :: Front
function WSErro($ErrMsg, $ErrNo, $ErrDie = null) {
    $CssClass = ($ErrNo == E_USER_NOTICE ? WS_INFOR : ($ErrNo == E_USER_WARNING ? WS_ALERT : ($ErrNo == E_USER_ERROR ? WS_ERROR : $ErrNo)));
    echo "<p class=\"trigger {$CssClass}\">{$ErrMsg}<span class=\"ajax_close\"></span></p>";

    if ($ErrDie):
        die;
    endif;
}

//PHPErro :: personaliza o gatilho do PHP
function PHPErro($ErrNo, $ErrMsg, $ErrFile, $ErrLine) {
    $CssClass = ($ErrNo == E_USER_NOTICE ? WS_INFOR : ($ErrNo == E_USER_WARNING ? WS_ALERT : ($ErrNo == E_USER_ERROR ? WS_ERROR : $ErrNo)));
    echo "<p class=\"trigger {$CssClass}\">";
    echo "<b>Erro na Linha: {$ErrLine} :: </b> {$ErrMsg}<br>";
    echo "<small>{$ErrFile}</small>";
    echo "<span class=\"ajax_close\"></span></p>";

    if ($ErrNo == E_USER_ERROR):
        die;
    endif;
}

set_error_handler('PHPErro');